// 增删改查的请求地址
const urlPrefix = "/zjfModuleLocal"
const urlAdd = urlPrefix + "/add";
const urlDel = urlPrefix + "/delete";
const urlEdit = urlPrefix + "/update";
const urlQuery = urlPrefix + "/list";
const urlDropdownVersion = "/zjfUserModuleVersion/list";
const urlDropdownRemoteView = "/zjfServiceRemoteView/list";
const urlDropdownBaseServer = "/zjfBaseServerInfo/list";

const urlScanService = urlPrefix + "/scan";
customerClickToSelect = false;
let param = {"PAGE_CAPACITY": 1000, "PAGE_OFFSET": 0, "SORT_TYPE": "asc"};
let keyList = [];
let versionList = [];
let baseServerList = [];
const columns =
    [{
        checkbox: true
    }, {
        field: 'ID',
        title: 'ID',
        align: 'center'
    }, {
        field: 'NAME',
        title: '名称',
        align: 'center',
        sortable: true,
        editable: {
            disabled: true,
            type: 'text',
            title: '名称',
            validate: function (value) {
                if ($.trim(value) === '') {
                    return '名称不能为空!';
                }
            }
        }
    }, {
        field: 'PARENT',
        title: '父路径',
        align: 'center',
        editable: {
            disabled: true,
            type: 'text',
            title: '父路径',
            validate: function (value) {
                if ($.trim(value) === '') {
                    return '父路径不能为空!';
                }
            }
        }
    },{
        field: 'TYPE',
        title: '类型',
        align: 'center',
        visible: false,
        editable: {
            type: 'select',
            title: '类型',
            validate: function (value) {
                if ($.trim(value) === '') {
                    return 'IP不能为空!';
                }
            },
            source:function () {
                return [{ value: 0, text: "依赖"},{ value: 1, text: "服务"}];
            }
        }
    }, {
        field: 'ORI_SRC',
        title: 'src路径',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'src路径',
            validate: function (v) {
                if (!v) return 'src路径不能为空';
            }
        }
    }, {
        field: 'ORI_POM',
        title: 'pom路径',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'pom路径',
            validate: function (v) {
                if (!v) return 'pom路径不能为空';
            }
        }
    },  {
        field: 'OUTPUT_TARGET',
        title: 'target路径',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'target路径',
            validate: function (v) {
                if (!v) return 'target路径不能为空';
            }
        }
    },  {
        field: 'OUTPUT_JAR',
        title: 'jar路径',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'jar路径',
            validate: function (v) {
                if (!v) return 'jar路径不能为空';
            }
        }
    },  {
        field: 'OUTPUT_LIB',
        title: 'lib目录',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'lib目录',
            validate: function (v) {
                if (!v) return 'lib目录不能为空';
            }
        }
    },  {
        field: 'OUTPUT_RESOURCE',
        title: 'resource路径',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'text',
            title: 'resource路径',
            validate: function (v) {
                if (!v) return 'resource路径不能为空';
            }
        }
    },   {
        field: 'ORDER',
        title: '优先级',
        align: 'center',
        sortable: true,
        editable: {
            type: 'text',
            title: '优先级',
            validate: function (value) {
                let b = isNumber(value);
                if (!b) {
                    return "请填写正确的数字";
                }
                let intVal = parseInt(value)
                if (!(intVal > 0 && intVal < 10000)) {
                    return "数字范围在0-9999";
                }
            }
        }
    },{
        field: 'IGNORE',
        title: '是否忽略',
        align: 'center',
        sortable: true,
        editable: {
            type: 'select',
            title: '是否忽略',
            source:function () {
                return [{ value: 0, text: "否"},{ value: 1, text: "是"}];
            }
        }
    }, {
        field: 'OUTPUT_TYPE',
        title: '输出类型',
        align: 'center',
        visible: false,
        editable: {
            disabled: true,
            type: 'select',
            title: '描述',
            source:function () {
                return [{ value: 0, text: "标准"},{ value: 1, text: "自定义"}];
            }
        }
    }, {
        field: 'VERSION',
        title: '版本',
        align: 'center',
        visible: true,
        editable: {
            type: 'select',
            title: '版本',
            source:function () {
                let list = [];
                for (it of versionList) {
                    list.push({value: it.VERSION, text: it.VERSION +"("+it.DESC+")"});
                }
                return list;
            }
        }
    },{
        field: 'USER',
        title: '用户',
        align: 'center',
        visible: false
    },{
        field: 'DESC',
        title: '描述',
        align: 'center',
        visible: false,
        switchable: true,
        editable: {
            type: 'text',
            title: '描述',
            validate: function (v) {
                if (!v) return '描述不能为空';
            }
        }
    }

    ];

function beforeInitTable() {
    // 展示右上角名称
    // showUser();
    // 初始化下拉框的信息
    showAttachedUser();
    showAttachedVersion();

    $("#m_module").addClass("active");
}
// 获取用户的信息 填充到联动下拉框中
function showAttachedVersion() {
    let user = $("#add select[name=user]");
    if (user === undefined || user.val().trim() === "") {
        errorMsg("用户信息为空,初始化失败", type.DANGER);
        return;
    }
    // 比如用户信息是admin
    let userVal = user.val().trim();
    param["USER"] = userVal;
    // 这里用同步,不然后面加载不到
    ajax(urlDropdownVersion,param,false,3)
}


//下拉框绑定默认的用户,如果可以多选的话,可以向后天发ajax获取数据
function showAttachedUser() {
    // let user = localStorage.getItem("USER")
    // let jsonObj = toJsonObj(user);
    // 这个标签里面要append进去这个东西
    let jsonObj = auth_user;
    let str = "<option value=\"" + jsonObj.USER + "\" selected>默认自己</option>"
    $("#add select[name=user]").html(str);
}

function add(param) {
    ajax(urlAdd, param, true ,1);

}
// 隐藏key选项,显示密码选项
function hideKey(ipt) {
    // 先删除 name是way的input框的checked自定义属性
    $("#add input[name=way]").removeAttr("checked")
    // 再添加一个
    $(ipt).attr("checked","checked")

    $("#add .key").addClass("hide");
    $("#add .pass").removeClass("hide");
}
// 隐藏密码选项,显示key选项
function hidePass(ipt) {
    // 先删除 name是way的input框的checked自定义属性
    $("#add input[name=way]").removeAttr("checked")
    // 再添加一个
    $(ipt).attr("checked","checked")

    $("#add .pass").addClass("hide");
    $("#add .key").removeClass("hide");
}
// 默认设置
function defaultSet() {
}

// 删除数据 发送请求
function delRecord(rows) {
    // 映射出ID array
    let ids = rows.map(r => {
        return r.ID
    })
    let param = {}
    param["IDS"] = ids;
    // 同步删除数据,然后刷新列表
    ajax(urlDel, param ,false, 2)
    // 默默的刷新表格
    // silenceRefresh("list");
}

function showOtherConfig() {
    $(".show-flag").removeClass("hide");
}

function hideOtherConfig() {
    $(".show-flag").removeClass("hide");
    $(".show-flag").addClass("hide");
}

function getCustomerParam() {
    let customer_param = [];
    let obj = {}
    obj.K = "USER";
    obj.V = auth_user.USER;
    customer_param.push(obj);
    return customer_param;
}
function customerInitBtn() {
    $("#btn_delete").removeClass("hidden");
    $("#scan_btn").removeClass("hidden");
    // $("#customer_select_btn").removeClass("hidden");

    initScanBtn();
}

function initScanBtn() {
    // 绑定modal按钮的click事件
    $("#scan_btn").click(function () {
        // 扫描modal下拉用户
        scanDropdownUser();
        // 扫描modal下拉用户版本
        scanDropdownVersion();
        // 扫描modal下拉基本服务器信息
        scanDropdownBaseServer();
        // 扫描modal下拉远程服务信息
        // scanDropdownRemoteService();
    });
    // $("#scan_form select[name=scan_server]").change(function () {
    //     scanDropdownRemoteService();
    // });
}

// 模态框的确认事件
function modalConfirm() {
    let formObj = getScanTableVal("scan_form");
    console.log("模态框确认事件")
    console.log(formObj);
    for (const obj in formObj) {
        if (formObj[obj] === null) {
            errorMsg("不能有空参",type.DANGER)
            return;
        }
    }
    ajax(urlScanService, formObj, true, 5);


}
function scanDropdownUser() {
    let jsonObj = auth_user;
    // 这个标签里面要append进去这个东西
    let str = "<option value=\"" + jsonObj.USER + "\" selected>默认自己</option>"
    $("#scan_form select[name=scan_user]").html(str);
}
function scanDropdownVersion() {
    let append = "";
    for (it of versionList) {
        append += "<option value=\""+it.VERSION+"\">"+it.VERSION +"("+it.DESC+")</option>";
    }
    $("#scan_form select[name=scan_version]").html(append);
}
function scanDropdownBaseServer() {
    let append = "";
    for (it of baseServerList) {
        append += "<option value=\""+it.ID+"\">"+it.NAME +"("+it.DESC+")</option>";
    }
    $("#scan_form select[name=scan_server]").html(append);
}

function customer_sheet_name() {
    return "本地模块列表";
}